package com.zhu.commentstatisticspublisher.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.zhu.commentstatisticspublisher.bean.UserEvaluate;
import com.zhu.commentstatisticspublisher.service.EmotionRecognitionService;
import com.zhu.commentstatisticspublisher.utils.GetDateUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/zhu/shop/emotion")
public class EmotionRecognitionController {

    @Autowired
    private EmotionRecognitionService emotionRecognitionService;

    /**
     * 查询指定日期的所有好评&差评  日期默认为当日
     * @param commentVal 评论
     * @return
     */
    @GetMapping("/statistics")
    String getEvaluateUsersStatistics(@RequestParam("comment") String commentVal,@RequestParam(value = "date",defaultValue = "0") String date){
        if("0".equals(date)){
            date = GetDateUtil.getCurrentTime();
        }
        List<UserEvaluate> evaluateUsers = emotionRecognitionService.getEvaluateUsers(commentVal,date);
        JSONObject resultJson = new JSONObject();
        for (UserEvaluate evaluateUser : evaluateUsers) {
            String userId = evaluateUser.getUserId();

            JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(evaluateUser));
            resultJson.put(userId,jsonObject);
        }
        return resultJson.toJSONString();
    }


    /**
     * 提交用户  评论 调用 python 脚本 识别用户情感 将结果值返回
     * 封装成实体传入Service  插入到情感表中 返回插入一条 正面/负面评论
     * 前端请求 controller  提交表单  用户名 评论
     * service层 业务逻辑 调用python脚本 情感识别 将识别结果增加 实体类属性
     *
     * @param userEvaluate
     * @return
     */
    @PostMapping("/submit")
    String commentsSubmit(@RequestBody UserEvaluate userEvaluate){
        if (userEvaluate.getCreateTime() == null){
            userEvaluate.setCreateTime(System.currentTimeMillis());
        }
        int submit = emotionRecognitionService.commentSubmit(userEvaluate);
        System.out.println("成功提交" +submit + "条评论");
        return "submit success";
    }

    /*
    场景  生产环境中 评论数据为海量存储的 HDFS 将处理后的数据
    Mysql  ->  2023.04.25 所有的差评(海量数据) ->  计算框架处理 Flink(Python)
    批次处理 python 脚本 / spark MLB  对评论的统计 时效性要求不是很高(每天的关键词?)  离线 Hive Hbase
    聚合的一些指标 写入OLAP ES 、ClickHouse 、Mysql 、Persto。
    python 的数据处理框架  numpy pandas  dateFrame MB 级别 海量数据的计算性能下降   使用 flink  调用 python脚本  针对单条数据进行处理 最后对关键词进行汇总
     */
    @GetMapping("/keyword")
    String getcommentKeyWord(@RequestParam("comment") String commentVal,@RequestParam("date") String date){
        return null;
    }

}
